React-Native IOS及安卓打包
开发了快两个月的RN终于到了要打包发布的阶段。
网上有不少文章博客,还是RN更新太快的缘由,有些并不适用于当前版本。这里简单说一下吧。(这里用的是RN0.43.4)
IOS
首先在项目根目录创建一个空文件夹,我这里创建的是:release_ios
之后执行打包命令(有点像webpack将JS代码压缩合并,并且导出所使用的静态资源)
react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output release_ios/main.jsbundle --assets-dest release_ios/
命令具体含义:
- --entry-file ,ios或者android入口的js名称,比如index.ios.js
- --platform ,平台名称(ios或者android)
- --dev ,设置为false的时候将会对JavaScript代码进行优化处理。
- --bundle-output, 生成的jsbundle文件的名称,比如 release_ios/main.jsbundle
- --assets-dest 图片以及其他资源存放的目录,比如 release_ios/
大概1,2min打包ok。在我们的新建文件夹中就会有相应的bundle文件。

在之后打开xCode。将bundle文件拖拽到项目中。(++点击options,一定要勾选Create folder references选项,将bundle文件夹添加到项目里,Xcode下该文件夹一定要是蓝色的。++)
修改AppDelegate.m中的代码,替换jsCodeLocation ,注释掉之前的jsCodeLocation 代码。
//jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
+jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

最后将项目由debug状态改成release状态,Xcode-->Product-->Scheme-->Edit Scheme... (在此期间选择 Generic iOS Device ,修改Version和Build号)
最后command+shift+k clean一下项目。选择Archice。就可以生成ipa包咯。
Android
android这块打包很简单。这里主要说一下真机调试。走了不少弯路。(比ios方便很多。) 首先,在项目根目录下启动服务:
react-native start
手机打开开发者中的USB调试,链接上PC。 通过命令:
adb reverse tcp:8081 tcp:8081
将手机与rn的node服务链接。
最后在android studio中编译运行选择连接上的设备就ok咯。
安卓这块开发还是建议使用真机链接的方式。ios端模拟器相对流畅,安卓模拟器(这里mac pro13)卡的不要不要的。很影响开发效率。
打包的话 直接看官方文档就ok
以上